package com.ruoyi.common.core.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;

import java.util.Date;

@Data
public class SysOrderDto {

    /**
     * 订单id
     */
    private String orderId;

    /**
     * 商户订单编号
     */
    private String outOrderNo;

    /**
     * 微信订单编号
     */
    private String wxOrderNo;

    /**
     * 商户退款单号
     */
    private String outRefundNo;

    /**
     * 微信退款单号
     */
    private String wxRefundNo;

    /**
     * 订单所属的景区的id
     */
    private Long scenicId;

    /**
     * 订单所属的景区的名称。
     */
    private String scenicName;

    /**
     * 订单所属的码头id
     */
    private Long wharfId;
    /**
     * 订单所属的码头名称。
     */
    private String wharfName;

    /**
     * 船只id
     */
    private Long boatId;
    /**
     * 船编号
     */
    private String boatCode;

    /**
     * 订单类型。0：计时收费订单，1：套餐收费订单，2：拼团订单。
     */
    private Integer orderType;

    /**
     * 订单状态。0：待付款，1：待使用，2：使用中，3: 已关闭，4：已完成
     */
    private Integer orderStatus;
    /**
     * 订单状态文本描述。0：待付款，1：待使用，2：使用中，3: 已关闭，4：已完成
     */
    private String orderStatusDesc;

    /**
     * 订单文本描述，示例：计时计费订单-押金。
     */
    private String orderDesc;

    /**
     * 退款文本描述，示例：用户超时未上船，系统主动退款。
     */
    private String refundDesc;

    /**
     * 订单费用金额，单位：元。
     */
    private double orderFee;

    /**
     * 订单费用支付状态。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款
     */
    private Integer feePayStatus;

    /**
     * 订单费用支付状态文本描述。0：未支付，1：支付中，2：已支付，3：退款中，4：已退款
     */
    private String feePayStatusDesc;

    /**
     * 用户实际支付的订单费用金额，单位：元。
     */
    private double realPayFee;

    /**
     * 订单押金金额，单位：元。
     */
    private double orderDeposit;

    /**
     * 订单押金支付状态。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款
     */
    private Integer depositPayStatus;

    /**
     * 订单押金支付状态文本描述。0：未支付，1：支付中，2：已支付，3：退款中，4：已退款
     */
    private String depositPayStatusDesc;

    /**
     * 用户实际支付的订单押金金额，单位：元。
     */
    private double realPayDeposit;

    /**
     * 订单总金额(订单费用+押金)，单位：元。
     */
    private double orderTotalPrice;

    /**
     * 用户实际支付的订单总金额(订单费用+押金)，单位：元。
     */
    private double realPayTotalPrice;

    /**
     * 订单费用的支付方式。0：未支付，1：微信支付，2：支付宝，3：银行卡。
     */
    private Integer feePayMethod;

    /**
     * 订单费用支付方式的文字描述。如：“微信零钱支付”等。
     */
    private String feePayMethodDesc;

    /**
     * 订单押金的支付方式。0：未支付，1：微信支付，2：支付宝，3：银行卡。
     */
    private Integer depositPayMethod;

    /**
     * 订单押金支付方式的文字描述。如：“微信零钱支付”等。
     */
    private String depositPayMethodDesc;

    /**
     * 用户退款金额，单位：元。
     */
    private double refundAmount;
    /**
     * 退款失败原因。
     */
    private String refundFailReason;

    /**
     * 订单所属的用户id。
     */
    private Long userId;

    /**
     * 订单实际持续时长的毫秒值。
     */
    private Long realDuration;
    /**
     * 订单的创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 订单结束时间。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 订单开始时间(开始计费时间)。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date beginTime;
    /**
     * 订单关闭时间(结束计费时不代表订单关闭，可能存在结束计费当还有待支付费用，在待支付费用结清前订单不能关闭)。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date closedTime;

    /**
     * 订单剩余支付时长，单位：秒。此值只在待支付状态下的订单才有非0值，其他情况下值为0或null.
     */
    private Long remainPayTime;
    /**
     * 确认上船剩余时长。
     */
    private Long confirmOnBoatRemainTime;

    /**
     * 备注
     */
    private String remark;

    /**
     * 超时时长，单位：分钟。
     */
    private Integer overtime;
    /**
     * 订单超时费用金额，单位：元，保留2位小数。
     */
    private double overtimeFee;

    /**
     * 套餐包含的游玩时长，单位：分钟。
     */
    private Integer taocanDuration;

    /**
     * 套餐价格，单位：元。
     */
    private Double taocanPrice;

    /**
     * 套餐押金，单位：元。
     */
    private Double taocanDeposit;
    /**
     * 计时规则id。用于计算订单超时费用。
     */
    private Long jishiId;

    /**
     * 计时计费单位价格，单位：元。
     */
    private Double jishiPrice;

    /**
     * 计时计费计价单位，默认为0。(0: 元/分钟, 1: 元/30分钟, 2: 元/小时)
     */
    private Integer jishiUnit;

    /**
     * 拼团状态。0：拼团待启动，1：拼团中，2：拼团成功，3：拼团失败。
     */
    @Excel(name = "拼团状态。0：拼团待启动，1：拼团中，2：拼团成功，3：拼团失败。")
    private Integer pintuanStatus;

    /**
     * 拼团状态的文本描述。0：拼团待启动，1：拼团中，2：拼团成功，3：拼团失败。默认为拼团待启动状态，即0。
     */
    private String pintuanStatusDesc;
    /**
     * 拼团剩余时长。
     */
    private Long pintuanRemainTime;

}
